﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Entidad;
using System.Data.SqlClient;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsTH_Venta_Externa_DatosDAO
    {
        private readonly DM_CROSLAND_20130417Entities ContextoDeObjs = new DM_CROSLAND_20130417Entities();

        public List<TH_VENTA_EXTERNA_DATOS> Listar(int ANIO, int MES, string ID_USUARIO)
        {
            var p = new object[] { new SqlParameter("@ANIO", ANIO), new SqlParameter("@MES", MES), new SqlParameter("@ID_USUARIO",ID_USUARIO) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<TH_VENTA_EXTERNA_DATOS>("exec USP_TH_VENTA_EXTERNA_DATOS_LISTAR @ANIO,@MES,@ID_USUARIO", p).AsQueryable().ToList();
            return resultado;
        }

        public List<TH_VENTA_EXTERNA_DATOS> Seleccionar(int ID_VENTA_EXTERNA_DATOS)
        {
            var p = new object[] { new SqlParameter("@ID_VENTA_EXTERNA_DATOS", ID_VENTA_EXTERNA_DATOS) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<TH_VENTA_EXTERNA_DATOS>("exec USP_TH_VENTA_EXTERNA_DATOS_SELECT @ID_VENTA_EXTERNA_DATOS", p).AsQueryable().ToList();
            return resultado;
        }

        public List<TH_VENTA_EXTERNA_DATOS> Obtener(int ANIO, int MES, int DIA, string ID_USUARIO)
        {
            var p = new object[] { new SqlParameter("@ANIO", ANIO), new SqlParameter("@MES", MES), new SqlParameter("@DIA", DIA), new SqlParameter("@ID_USUARIO", ID_USUARIO) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<TH_VENTA_EXTERNA_DATOS>("exec USP_TH_VENTA_EXTERNA_DATOS_OBTENER @ANIO,@MES,@DIA,@ID_USUARIO", p).AsQueryable().ToList();
            return resultado;
        }

        public bool InsertarCotizacionesRealizadas(int id, DateTime fecha, int Cantidad, string ID_USUARIO)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("insert into TH_VENTA_EXTERNA_DATOS(ID_VENTA_EXTERNA_DATOS,FECHA_REGISTRO,NRO_COTIZACIONES_REALIZADAS,ID_USUARIO) values (" + id.ToString() + ",'" + fecha.Year.ToString("0000") + fecha.Month.ToString("00") + fecha.Day.ToString("00") + "'," + Cantidad.ToString() + ",'" + ID_USUARIO + "')");
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool InsertarPersonasTienda(int id, DateTime fecha, int Cantidad, string ID_USUARIO)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("insert into TH_VENTA_EXTERNA_DATOS(ID_VENTA_EXTERNA_DATOS,FECHA_REGISTRO,NRO_PERSONAS_TIENDA,ID_USUARIO) values (" + id.ToString() + ",'" + fecha.Year.ToString("0000") + fecha.Month.ToString("00") + fecha.Day.ToString("00") + "'," + Cantidad.ToString() + ",'" + ID_USUARIO + "')");
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool ActualizarCotizacionesRealizadas(int id, DateTime fecha, int Cantidad)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("update TH_VENTA_EXTERNA_DATOS set NRO_COTIZACIONES_REALIZADAS = " + Cantidad.ToString() + " where ID_VENTA_EXTERNA_DATOS = " + id.ToString());
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool ActualizarPersonasTienda(int id, DateTime fecha, int Cantidad)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("update TH_VENTA_EXTERNA_DATOS set NRO_PERSONAS_TIENDA = " + Cantidad.ToString() + " where ID_VENTA_EXTERNA_DATOS = " + id.ToString());
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public int UltimoID()
        {
            int max = 0;

            try
            {
                max = ContextoDeObjs.TH_VENTA_EXTERNA_DATOS.Select(x => x.ID_VENTA_EXTERNA_DATOS).Max();
            }
            catch (Exception)
            {
                return max;
            }

            return max;

        }
    }
}
